package com.wali.modules.bil.vo;

import com.wali.common.ccp.execl.annotation.CcpExcelField;

import java.io.Serializable;
import java.util.Objects;

/**
 * @author walixu
 * @ClassName com.wali.modules.common.vo
 * @Description 运单信息VO类
 * @email wali.xu@kpmg.com
 * @date 19/01/2019 2:14 下午
 */
public class BilExpressVO implements Serializable {

    /**
     * 主键
     */
    private int id;

    /**
     * 运单号
     */
    @CcpExcelField(title = "运单号", value = "waybillNo")
    private String waybillNo;

    /**
     * 用户ID
     */
    private int userId;

    /**
     * 发货仓库仓库
     */
    private String storeCode;

    /**
     * 发货仓库名称
     */
    private String storeName;

    /**
     * 渠道
     */
    private String channelCode;

    /**
     * 渠道名称
     */
    private String channelName;

    /**
     * 收件人
     */
    private int receiverId;

    /**
     * 收件人姓名
     */
    private String receiverName;

    /**
     * 收件人电话
     */
    private String receiverTelphone;

    /**
     * 收件人地址
     */
    private String receiverAddr;

    /**
     * 收件人省
     */
    private String receiverProvince;

    /**
     * 收件人省code
     */
    private String receiverProvinceCode;

    /**
     * 收件人市
     */
    private String receiverCity;

    /**
     * 收件人市code
     */
    private String receiverCityCode;

    /**
     * 收件人邮编
     */
    private String receiverPostcode;

    /**
     * 发件人账号
     */
    private String username;

    /**
     * 收件人身份证
     */
    private String idCard;

    /**
     * 收件人身份证正面
     */
    private String idCardFront;

    /**
     * 收件人身份证反面
     */
    private String idCardBack;

    /**
     * 发件人
     */
    private int senderId;

    /**
     * 发件人姓名
     */
    private String senderName;

    /**
     * 发件人电话
     */
    private String senderTelphone;

    /**
     * 发件人地址
     */
    private String senderAddr;

    /**
     * 总费用
     */
    private double total;

    /**
     * 总费用单位
     */
    private String totalUnit = "cad";

    /**
     * 价值
     */
    private double value;

    /**
     * 税费
     */
    private double tax;

    /**
     * 保价
     */
    private double insurance;

    /**
     * 保费
     */
    private double premium;

    /**
     * 增值服务费
     */
    private double gprs;

    /**
     * 预估重量
     */
    private double accessWeight;

    /**
     * 称重重量
     */
    private double trueWeight;

    /**
     * 计费重量
     */
    private double chargeWeight;

    /**
     * 计费重量单位
     */
    private String chargeWeightUnit = "kg";

    /**
     * 运单当前状态
     */
    private int state;

    /**
     * 运单当前状态描述
     */
    private String stateDescription;

    /**
     * 业务操作方式
     */
    private int operate;

    /**
     * 快递号
     */
    @CcpExcelField(title = "快递号", value = "expressNo")
    private String expressNo;

    /**
     * 大头笔位置
     */
    @CcpExcelField(title = "大头笔位置", value = "paintMarker")
    private String paintMarker;

    /**
     * 大头笔位置英文
     */
    @CcpExcelField(title = "大头笔位置英文", value = "paintMarkerEn")
    private String paintMarkerEn;

    /**
     * 批次号
     */
    @CcpExcelField(title = "批次号", value = "batchNo")
    private String batchNo;

    /**
     * 备注
     */
    private String description;

    /**
     * 创建时间
     */
    private String createTime;

    /**
     * 更新时间
     */
    private String updateTime;

    /**
     * 开始日期
     */
    private String startDate;

    /**
     * 结束日期
     */
    private String endDate;

    /**
     * 条形码
     */
    private String barcode;

    /**
     * 物品数量
     */
    private int count;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getWaybillNo() {
        return waybillNo;
    }

    public void setWaybillNo(String waybillNo) {
        this.waybillNo = waybillNo;
    }

    public String getTotalUnit() {
        return totalUnit;
    }

    public void setTotalUnit(String totalUnit) {
        this.totalUnit = totalUnit;
    }

    public String getChargeWeightUnit() {
        return chargeWeightUnit;
    }

    public void setChargeWeightUnit(String chargeWeightUnit) {
        this.chargeWeightUnit = chargeWeightUnit;
    }

    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getStoreCode() {
        return storeCode;
    }

    public void setStoreCode(String storeCode) {
        this.storeCode = storeCode;
    }

    public String getStoreName() {
        return storeName;
    }

    public void setStoreName(String storeName) {
        this.storeName = storeName;
    }

    public String getChannelName() {
        return channelName;
    }

    public void setChannelName(String channelName) {
        this.channelName = channelName;
    }

    public String getReceiverName() {
        return receiverName;
    }

    public void setReceiverName(String receiverName) {
        this.receiverName = receiverName;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getIdCard() {
        return idCard;
    }

    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    public String getIdCardFront() {
        return idCardFront;
    }

    public void setIdCardFront(String idCardFront) {
        this.idCardFront = idCardFront;
    }

    public String getIdCardBack() {
        return idCardBack;
    }

    public void setIdCardBack(String idCardBack) {
        this.idCardBack = idCardBack;
    }

    public String getChannelCode() {
        return channelCode;
    }

    public void setChannelCode(String channelCode) {
        this.channelCode = channelCode;
    }

    public int getReceiverId() {
        return receiverId;
    }

    public void setReceiverId(int receiverId) {
        this.receiverId = receiverId;
    }

    public String getReceiverTelphone() {
        return receiverTelphone;
    }

    public void setReceiverTelphone(String receiverTelphone) {
        this.receiverTelphone = receiverTelphone;
    }

    public String getReceiverAddr() {
        return receiverAddr;
    }

    public void setReceiverAddr(String receiverAddr) {
        this.receiverAddr = receiverAddr;
    }

    public String getReceiverProvince() {
        return receiverProvince;
    }

    public void setReceiverProvince(String receiverProvince) {
        this.receiverProvince = receiverProvince;
    }

    public String getReceiverProvinceCode() {
        return receiverProvinceCode;
    }

    public void setReceiverProvinceCode(String receiverProvinceCode) {
        this.receiverProvinceCode = receiverProvinceCode;
    }

    public String getReceiverCityCode() {
        return receiverCityCode;
    }

    public void setReceiverCityCode(String receiverCityCode) {
        this.receiverCityCode = receiverCityCode;
    }

    public String getReceiverCity() {
        return receiverCity;
    }

    public void setReceiverCity(String receiverCity) {
        this.receiverCity = receiverCity;
    }

    public String getReceiverPostcode() {
        return receiverPostcode;
    }

    public void setReceiverPostcode(String receiverPostcode) {
        this.receiverPostcode = receiverPostcode;
    }

    public int getSenderId() {
        return senderId;
    }

    public void setSenderId(int senderId) {
        this.senderId = senderId;
    }

    public String getSenderName() {
        return senderName;
    }

    public void setSenderName(String senderName) {
        this.senderName = senderName;
    }

    public String getSenderTelphone() {
        return senderTelphone;
    }

    public void setSenderTelphone(String senderTelphone) {
        this.senderTelphone = senderTelphone;
    }

    public String getSenderAddr() {
        return senderAddr;
    }

    public void setSenderAddr(String senderAddr) {
        this.senderAddr = senderAddr;
    }

    public double getTotal() {
        return total;
    }

    public void setTotal(double total) {
        this.total = total;
    }

    public double getValue() {
        return value;
    }

    public void setValue(double value) {
        this.value = value;
    }

    public double getTax() {
        return tax;
    }

    public void setTax(double tax) {
        this.tax = tax;
    }

    public double getInsurance() {
        return insurance;
    }

    public void setInsurance(double insurance) {
        this.insurance = insurance;
    }

    public double getPremium() {
        return premium;
    }

    public void setPremium(double premium) {
        this.premium = premium;
    }

    public double getGprs() {
        return gprs;
    }

    public void setGprs(double gprs) {
        this.gprs = gprs;
    }

    public double getAccessWeight() {
        return accessWeight;
    }

    public void setAccessWeight(double accessWeight) {
        this.accessWeight = accessWeight;
    }

    public double getTrueWeight() {
        return trueWeight;
    }

    public void setTrueWeight(double trueWeight) {
        this.trueWeight = trueWeight;
    }

    public double getChargeWeight() {
        return chargeWeight;
    }

    public void setChargeWeight(double chargeWeight) {
        this.chargeWeight = chargeWeight;
    }

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }

    public String getStateDescription() {
        return stateDescription;
    }

    public void setStateDescription(String stateDescription) {
        this.stateDescription = stateDescription;
    }

    public int getOperate() {
        return operate;
    }

    public void setOperate(int operate) {
        this.operate = operate;
    }

    public String getExpressNo() {
        return expressNo;
    }

    public void setExpressNo(String expressNo) {
        this.expressNo = expressNo;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getCreateTime() {
        return createTime;
    }

    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }

    public String getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(String updateTime) {
        this.updateTime = updateTime;
    }

    public String getStartDate() {
        return startDate;
    }

    public void setStartDate(String startDate) {
        this.startDate = startDate;
    }

    public String getEndDate() {
        return endDate;
    }

    public void setEndDate(String endDate) {
        this.endDate = endDate;
    }

    public String getBarcode() {
        return barcode;
    }

    public void setBarcode(String barcode) {
        this.barcode = barcode;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public String getPaintMarker() {
        return paintMarker;
    }

    public void setPaintMarker(String paintMarker) {
        this.paintMarker = paintMarker;
    }

    public String getPaintMarkerEn() {
        return paintMarkerEn;
    }

    public void setPaintMarkerEn(String paintMarkerEn) {
        this.paintMarkerEn = paintMarkerEn;
    }

    public String getBatchNo() {
        return batchNo;
    }

    public void setBatchNo(String batchNo) {
        this.batchNo = batchNo;
    }

    @Override
    public String toString() {
        return "BilExpressVO{" +
                "id=" + id +
                ", waybillNo='" + waybillNo + '\'' +
                ", userId=" + userId +
                ", storeCode='" + storeCode + '\'' +
                ", storeName='" + storeName + '\'' +
                ", channelCode='" + channelCode + '\'' +
                ", channelName='" + channelName + '\'' +
                ", receiverId=" + receiverId +
                ", receiverName='" + receiverName + '\'' +
                ", receiverTelphone='" + receiverTelphone + '\'' +
                ", receiverAddr='" + receiverAddr + '\'' +
                ", receiverProvince='" + receiverProvince + '\'' +
                ", receiverCity='" + receiverCity + '\'' +
                ", receiverPostcode='" + receiverPostcode + '\'' +
                ", idCard='" + idCard + '\'' +
                ", senderId=" + senderId +
                ", senderName='" + senderName + '\'' +
                ", senderTelphone='" + senderTelphone + '\'' +
                ", senderAddr='" + senderAddr + '\'' +
                ", total=" + total +
                ", value=" + value +
                ", tax=" + tax +
                ", insurance=" + insurance +
                ", premium=" + premium +
                ", gprs=" + gprs +
                ", accessWeight=" + accessWeight +
                ", trueWeight=" + trueWeight +
                ", chargeWeight=" + chargeWeight +
                ", state=" + state +
                ", stateDescription='" + stateDescription + '\'' +
                ", operate=" + operate +
                ", expressNo='" + expressNo + '\'' +
                ", description='" + description + '\'' +
                ", createTime='" + createTime + '\'' +
                ", updateTime='" + updateTime + '\'' +
                ", startDate='" + startDate + '\'' +
                ", endDate='" + endDate + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        BilExpressVO that = (BilExpressVO) o;
        return id == that.id &&
                userId == that.userId &&
                receiverId == that.receiverId &&
                senderId == that.senderId &&
                Double.compare(that.total, total) == 0 &&
                Double.compare(that.value, value) == 0 &&
                Double.compare(that.tax, tax) == 0 &&
                Double.compare(that.insurance, insurance) == 0 &&
                Double.compare(that.premium, premium) == 0 &&
                Double.compare(that.gprs, gprs) == 0 &&
                Double.compare(that.accessWeight, accessWeight) == 0 &&
                Double.compare(that.trueWeight, trueWeight) == 0 &&
                Double.compare(that.chargeWeight, chargeWeight) == 0 &&
                state == that.state &&
                operate == that.operate &&
                Objects.equals(waybillNo, that.waybillNo) &&
                Objects.equals(storeCode, that.storeCode) &&
                Objects.equals(storeName, that.storeName) &&
                Objects.equals(channelCode, that.channelCode) &&
                Objects.equals(channelName, that.channelName) &&
                Objects.equals(receiverName, that.receiverName) &&
                Objects.equals(receiverTelphone, that.receiverTelphone) &&
                Objects.equals(receiverAddr, that.receiverAddr) &&
                Objects.equals(receiverProvince, that.receiverProvince) &&
                Objects.equals(receiverCity, that.receiverCity) &&
                Objects.equals(receiverPostcode, that.receiverPostcode) &&
                Objects.equals(idCard, that.idCard) &&
                Objects.equals(senderName, that.senderName) &&
                Objects.equals(senderTelphone, that.senderTelphone) &&
                Objects.equals(senderAddr, that.senderAddr) &&
                Objects.equals(stateDescription, that.stateDescription) &&
                Objects.equals(expressNo, that.expressNo) &&
                Objects.equals(description, that.description) &&
                Objects.equals(createTime, that.createTime) &&
                Objects.equals(updateTime, that.updateTime) &&
                Objects.equals(startDate, that.startDate) &&
                Objects.equals(endDate, that.endDate);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, waybillNo, userId, storeCode, storeName, channelCode, channelName, receiverId, receiverName, receiverTelphone, receiverAddr, receiverProvince, receiverCity, receiverPostcode, idCard, senderId, senderName, senderTelphone, senderAddr, total, value, tax, insurance, premium, gprs, accessWeight, trueWeight, chargeWeight, state, stateDescription, operate, expressNo, description, createTime, updateTime, startDate, endDate);
    }

}
